package com.jiang.专题.双指针.Q125;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/01/19 22:06
 */
class Solution {
    // 在原字符串中判断
    // public boolean isPalindrome(String s) {
    //     int l = 0, r = s.length() - 1;
    //     s = s.toLowerCase();
    //     char[] arr = s.toCharArray();
    //     while(l < r) {
    //         while(!('a' <= arr[l] && arr[l] <= 'z') && !('0' <= arr[l]  && arr[l] <= '9')) {
    //             l++;
    //             if (l == r) return true;
    //         }

    //         while(!('a' <= arr[r] && arr[r] <= 'z') && !('0' <= arr[r] && arr[r]  <= '9')) {
    //             r--;
    //             if (l == r) return true;
    //         }
    //         if (arr[l] != arr[r]) return false;
    //         l++;
    //         r--;
    //     }
    //     return true;
    // }

    // 筛选
    public boolean isPalindrome(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (Character.isLetterOrDigit(c)) {
                sb.append(Character.toLowerCase(c));
            }
        }
        StringBuilder sb_rev = new StringBuilder(sb).reverse();
        return sb.toString().equals(sb_rev.toString());
    }
}

